package main

import (
	"fmt"
	"os"
)

type CLI struct {
	bc *BlockChain
}

func (cli *CLI) Run() {
	args := os.Args
	if len(args) < 2 {
		fmt.Println("命令行错误")
	}
	cmd := args[1]
	switch cmd {
	case "addBlock":
		fmt.Println("添加区块")
		if len(args) == 4 && args[2] == "--data" {
			data := args[3]
			cli.bc.AddBlock(data)
		} else {
			fmt.Println("添加区块使用参数不正确")
		}
	case "printChain":
		cli.PrintBlockChain()
	default:
		fmt.Println("命令行错误")
	}
}

func (cli *CLI) PrintBlockChain() {
	bc := cli.bc
	it := bc.NewIterator()
	var i int
	for {
		i++
		block := it.next()
		fmt.Printf("前一个区块的哈希值为 %x\n", block.PrevHash)
		fmt.Printf("当前的区块的哈希值为 %x\n", block.Hash)
		fmt.Printf("当前的区块的数据为 %s\n", block.Data)
		if len(block.PrevHash) == 0 {
			fmt.Println("区块链遍历结束")
			break
		}
	}
	fmt.Printf("区块链的总数是%d", i)
}
